package br.com.minhascontas.DAO;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import br.com.minhascontas.model.ItemGrupo;

public class ItemGrupoDAO extends SQLiteOpenHelper{
	
	
	private static final int VERSAO = 1;
	private static final String DATABASE = "minhasContas";
	private static final String TABELA = "itemGrupo";
	
	private static final String[] COLUNAS = { "id", "nome", "idGrupo"};
	
	public ItemGrupoDAO(Context context) {
		super(context, DATABASE, null, VERSAO);

		
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		String sql =  "CREATE TABLE "+ TABELA +" (id INTEGER PRIMARY KEY,  nome TEXT UNIQUE NOT NULL, idGrupo INTEGER, FOREIGN KEY(idGrupo) REFERENCES Grupo(id));";
		
		db.execSQL(sql);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		String sql = "DROP TABLE IF EXISTS " + TABELA;
		db.execSQL(sql);
		onCreate(db);
	}
	
	public void inserir(ItemGrupo itemGrupo){
		ContentValues values = new ContentValues();
		int idGrupo = (int) (long) itemGrupo.getGrupo().getId();
		itemGrupo.setIdGrupo(idGrupo);
		values.put("nome", itemGrupo.getNome());
		values.put("idGrupo", itemGrupo.getIdGrupo());
		getWritableDatabase().insert(TABELA, null, values);
	}
	
	public List<ItemGrupo> listarItemGrupo(){
		List<ItemGrupo> itemGrupos = new ArrayList<ItemGrupo>();
		
		String strSql = "select * from " + TABELA +" INNER JOIN GRUPO ON ITEMGRUPO.IDGRUPO = GRUPO.ID;";
		
		 Cursor c = getWritableDatabase().rawQuery(strSql, null);
		 
		 while (c.moveToNext()){
			 ItemGrupo itemGrupo = new ItemGrupo();
			 itemGrupo.setId(c.getLong(0));
			 itemGrupo.setNome(c.getString(1));
			 itemGrupo.setNomeGrupo(c.getString(4));
			 itemGrupos.add(itemGrupo);
		 }
		
		return itemGrupos;
	}
	
	public List<ItemGrupo> getLista() {
		List<ItemGrupo> Grupos = new ArrayList<ItemGrupo>();

		Cursor c = getWritableDatabase().query(TABELA, COLUNAS, null, null, null,
				null, null);

		while (c.moveToNext()) {
			ItemGrupo Grupo = new ItemGrupo();
			Grupo.setId(c.getLong(0));
			Grupo.setNome(c.getString(1));
			Grupo.setIdGrupo(c.getInt(2));

			Grupos.add(Grupo);
		}
		c.close();

		return Grupos;
	}

}
